BigQuery MLでgemini-proのリモートモデルを呼び出してみる
Google Cloudデータエンジニアのはんざわです。
2024年の2月15日に gemini-pro
のリモートモデルがGAになりました。
今回の記事では、BigQuery MLでML.GENERATE_TEXT関数と gemini-pro
を利用したモデルを活用し、BigQueryのテキストデータに自然言語タスクを実行してみたいと思います。
・Creating a remote model based on the gemini-pro Vertex AI large language model (LLM).
・Using the ML.GENERATE_TEXT function with a remote model based upon gemini-pro to perform generative natural language tasks on text stored in BigQuery tables.
https://cloud.google.com/release-notes#February_15_2024
Gemini とは
Geminiとは、Googleの最新の生成AIモデルです。
文章、画像、音声、コーディングなどの様々なタスクにおいて、高いパフォーマンスを出すと評価されているようです。
Geminiには、Gemini Ultra、Gemini Pro、Gemini Nanoの3つのサイズがあり、それぞれ以下のような特性を持つようです。
- Gemini Ultra — 非常に複雑なタスクに対応する、高性能かつ最大のモデル
- Gemini Pro — 幅広いタスクに対応する最良のモデル
- Gemini Nano — デバイス上のタスクに最も効率的なモデル
触ってみる
基本的な構築の流れは以下のドキュメントとほとんど同じです。
異なる点としては、リモートモデルのエンドポイントをGemini Proに設定するくらいです。
また、リモートモデルを呼び出す際のパラメータなどは以下のドキュメントを確認してみてください。
それではさっそく触ってみましょう
Vertex AIのコネクションを作成する
BigQuery Studioのコンソール画面から + 追加
-> 外部データソースへの接続
を選択します。
接続タイプにVertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)
を選択し、接続IDとリージョンを入力します。
今回の検証では、接続IDをvertex-ai-test
とし、東京リージョンに設定しました。
接続を作成
を選択し、以下のようなコネクションが作成されました。
Vertex AIのコネクションに権限を付与する
次にVertex AIのコネクションのサービスアカウントに必要な権限を付与します。
コネクションのサービスアカウントは、以下の画像の赤枠の部分になります。
今回の例だとbqcx-868908576898-78f0@gcp-sa-bigquery-condel.iam.gserviceaccount.com
のサービスアカウントに権限を割り当てます。
IAMと管理
-> IAM
-> アクセス権を付与
を選択します。
以下の画像のように前述したサービスアカウントにVertex AI ユーザー
の権限を付与します。
BigQuery MLでモデルを作成する
まずはモデルを格納するデータセットを作成します。
次に下記のクエリでGemini Proを利用したモデルを作成します。
CREATE OR REPLACE MODEL sample_model.gemini_pro REMOTE WITH CONNECTION 'asia-northeast1.vertex-ai-test' OPTIONS( ENDPOINT = 'gemini-pro' )
簡単な質問を投げて、モデルを呼び出してみる
さっそく作成したモデルを呼び出してみます。
まずはテーブルを使用せずに簡単な質問を投げてみます。
SELECT * FROM ML.GENERATE_TEXT( MODEL sample_model.gemini_pro, ( SELECT '大谷翔平について教えてください' AS prompt ), STRUCT( 1000 AS max_output_tokens ) );
このままだと見づらいので少し整形してみます。
SELECT STRING(_ml_generate_text_result_candidates.content.parts[0].text) AS content_text, ml_generate_text_result.usage_metadata.candidates_token_count AS candidates_token_count, ml_generate_text_result.usage_metadata.prompt_token_count AS prompt_token_count, ml_generate_text_result.usage_metadata.total_token_count AS total_token_count FROM ML.GENERATE_TEXT( MODEL sample_model.gemini_pro, ( SELECT '大谷翔平について教えてください' AS prompt ), STRUCT( 1000 AS max_output_tokens ) ) LEFT JOIN UNNEST(JSON_EXTRACT_ARRAY(ml_generate_text_result.candidates)) AS _ml_generate_text_result_candidates
肝心のレスポンスの内容は以下の通りでした。
**大谷翔平** **プロフィール** * 生年月日:1994年7月5日 * 出身地:岩手県奥州市 * 身長:193cm * 体重:95kg * ポジション:投手、指名打者 **経歴** * 花巻東高校時代は投手として活躍し、甲子園大会で準優勝。 * 2012年、北海道日本ハムファイターズに入団。 * 2013年、一軍デビュー。 * 2016年、投手として10勝4敗、打者として10本塁打を記録し、パ・リーグの最優秀選手(MVP)に選出。 * 2018年、ロサンゼルス・エンゼルスに移籍。 * 2021年、投手として9勝2敗、打者として46本塁打を記録し、ア・リーグのMVPに選出。 **特徴** * **二刀流:** 投手と指名打者の両方で活躍する稀有な選手。 * **投手:** 160km/hを超える速球と鋭いスライダーを武器とする。 * **打者:** 長打力に優れ、本塁打を量産する。 * **走塁:** 足も速く、盗塁も得意。 **受賞歴** * パ・リーグMVP(2016年) * ア・リーグMVP(2021年) * サイ・ヤング賞(2021年) * シルバースラッガー賞(2021年) * ゴールドグラブ賞(2021年) **その他** * 日本人選手として初めてア・リーグのMVPを受賞。 * 2021年には、投手として10勝以上、打者として40本塁打以上を記録した史上初の選手となった。 * 2023年シーズンは、エンゼルスと11年2億1000万ドルの契約を結んだ。
各項目について、とてもわかりやすく説明してくれました。
次はBigQueryのテーブルに対して、モデルを使用してみます。
BigQueryのテーブルにモデルを使用する
検証に使用するテーブルはサンプルテーブルの github_timeline
を東京リージョンに移動させてものを使用します。
以下のクエリのように、最初の5行だけを和訳する自然言語タスクを与えてみます。
SELECT STRING(_ml_generate_text_result_candidates.content.parts[0].text) AS content_text, repository_description FROM ML.GENERATE_TEXT( MODEL `sample_model.gemini_pro`, ( SELECT CONCAT('次の文章を和訳してください: ', repository_description ) AS prompt, repository_description FROM samples_dataset.github_timeline LIMIT 5 ) ) LEFT JOIN UNNEST(JSON_EXTRACT_ARRAY(ml_generate_text_result.candidates)) AS _ml_generate_text_result_candidates
特に違和感もなく和訳されていそうです。
料金
BigQuery MLのリモートモデルでGemini Proを利用した場合、料金の算出は以下のようになります。
BigQueryのスキャン料金 + Gemini Proの料金
BigQueryのスキャン料金はBigQueryの契約プランで異なります。
Gemini Proの料金は下記の表の通りです。
インプット | 料金 |
---|---|
画像 | $0.0025 / 枚数 |
動画 | $0.002 / 秒 |
文章 | $0.000125 / 1000文字 |
アウトプット | 料金 |
---|---|
文章 | $0.000375 / 1000文字 |
リージョン
2024年2月25日時点で対応しているリージョンは以下の通りです。
日本だと東京リージョン(asia-northeast1
)で対応しています。
- Americas
- us-central1
- northamerica-northeast1
- us-east4
- us-west1
- us-west4
- Europe
- europe-west1
- europe-west2
- europe-west3
- europe-west4
- europe-west9
- Asia
- asia-northeast1
- asia-northeast3
- asia-southeast1
まとめ
今回はBigQuery MLでGemini Proのリモートモデルを触ってみました。
今年の4月には、ラスベガスでGoogle Cloud Nextが開催される予定です。そのため、他のモデルや新しいAIプロダクトが追加されることが予想されます。
新たにアップデートがあれば、随時ブログ化したいと思います。